package com.hou.topic;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

//消费者
public class Receiver1 {
    public static void main(String[] args) throws JMSException {
        //1 创建ConnectionFactory工厂,  用户名  密码  连接url
        ConnectionFactory factory = new ActiveMQConnectionFactory(
                "houzheng",//默认的用户
                "houzheng",
                "tcp://localhost:61616"  //默认端口: 61616
        );
        //2 创建连接,并开启,默认是关闭的,并且完成后要关闭连接
        Connection connection = factory.createConnection();
        connection.start();
        //3 创建session   参数: 是否启用事务   选择签收模式(自动签收,客户端签收,不确认是否成功签收(消息可能崇重复))
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
        //4 创建Destination对象, 参数: 指定消息队列名称
        //Destination指的是消息的目的地或者消费来源,TPT模式中成为Queue,订阅/发布中称为主题
        Destination destination=session.createTopic("topic1");//订阅主题
        //5 通过session对象创建消息的发送者或者接受者
        MessageConsumer consumer = session.createConsumer(destination);//传入Destination
        //6 接受消息
        while(true){
            TextMessage message = (TextMessage) consumer.receive();//阻塞接受,还可以指定等待时间或者不阻塞接受,没有就跳过
            if(message==null)break;
            System.out.println(message.getText());
        }
        if(connection!=null)connection.close();//关闭连接
    }
}
